﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SmLiiga
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private Liiga liiga;

        public MainWindow()
        {
            InitializeComponent();
            liiga = new Liiga();
            InitializeLeague();
            InitializePlayers(); //Lisätään esimerkkipelaajat
            InitializeUI();
            InitializeEdit();
        }

        void InitializeUI()
        {
            try
            {
                listBox1.Items.Clear();
                foreach (Pelaaja p in liiga.PalautaLiiga())
                {
                    listBox1.Items.Add(p.PalautaTiedot());
                }
                listBox1.SelectedIndex = 0;
            }
            catch (Exception e)
            {
                label5.Content = e.Message;
            }
        }

        void InitializeEdit()
        {
            int index = listBox1.SelectedIndex;
            try
            {
                textBox1.Text = liiga.PalautaPelaaja(index).etunimi;
                textBox2.Text = liiga.PalautaPelaaja(index).sukunimi;
                textBox3.Text = liiga.PalautaPelaaja(index).siirtohinta.ToString();
                comboBox1.SelectedValue = liiga.PalautaPelaaja(index).seura;
            }
            catch (Exception e)
            {
                if (e is ArgumentOutOfRangeException) {
                    try
                    {
                        textBox1.Text = liiga.PalautaPelaaja(index).etunimi;
                        textBox2.Text = liiga.PalautaPelaaja(index).sukunimi;
                        textBox3.Text = liiga.PalautaPelaaja(index).siirtohinta.ToString();
                        comboBox1.SelectedValue = liiga.PalautaPelaaja(index).seura;
                    }
                    catch (Exception ex) {}
                } else 
                {
                label5.Content = e.Message;
                }
            }
        }

        void InitializeLeague()
        {
            comboBox1.Items.Add("Blues");
            comboBox1.Items.Add("HIFK");
            comboBox1.Items.Add("HPK");
            comboBox1.Items.Add("Ilves");
            comboBox1.Items.Add("Jokerit");
            comboBox1.Items.Add("JYP");
            comboBox1.Items.Add("KalPa");
            comboBox1.Items.Add("Kärpät");
            comboBox1.Items.Add("Lukko");
            comboBox1.Items.Add("Pelicans");
            comboBox1.Items.Add("SaiPa");
            comboBox1.Items.Add("Tappara");
            comboBox1.Items.Add("TPS");
            comboBox1.Items.Add("Ässät");
            comboBox1.SelectedIndex = 0;
        }

        void InitializePlayers()
        {
           //Pelaaja pekka = new Pelaaja("pekka", "pouta", 203, "KalPa");
           //Pelaaja juha = new Pelaaja("juha", "kelmi", 231, "Ilves");
           //Pelaaja matti = new Pelaaja("matti", "ankka", 5343, "TPS");

            try
            {
               //liiga.LisaaPelaaja(pekka);
               //liiga.LisaaPelaaja(matti);
               //liiga.LisaaPelaaja(juha);
            }
            catch (Exception e)
            {
                label5.Content = e.Message;
            }
            //Ladataan tiedostosta
            try
            {
            liiga.Load();
            InitializeUI();
            }
            catch (Exception ex) { label5.Content = ex.Message; }

        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Title = "Oudot oliot SM-liigassa";
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (textBox1.Text.Trim().Length == 0 || textBox2.Text.Trim().Length == 0 || textBox3.Text.Trim().Length == 0) { throw new System.ArgumentException("Parameter cannot be null", "original"); }
                else
                {
                    Pelaaja s = new Pelaaja(textBox1.Text, textBox2.Text, Convert.ToInt32(textBox3.Text), comboBox1.SelectedItem.ToString());
                    liiga.LisaaPelaaja(s);
                }
            }
            catch (Exception ex)
            {
                label5.Content = ex.Message;
            }
            InitializeUI();
        }

        private void button5_Click(object sender, RoutedEventArgs e)
        {
            Close();
        }

        private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
        InitializeEdit();
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                liiga.PoistaPelaaja(listBox1.SelectedIndex);
                InitializeUI();
                InitializeEdit();           
            }
            catch (Exception ex) { label5.Content = ex.Message; }
                
        }

        private void button4_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (textBox1.Text.Trim().Length == 0 || textBox2.Text.Trim().Length == 0 || textBox3.Text.Trim().Length == 0) { throw new System.ArgumentException("Parameter cannot be null", "original"); }
                else
                {
                    liiga.PalautaPelaaja(listBox1.SelectedIndex).etunimi = textBox1.Text;
                    liiga.PalautaPelaaja(listBox1.SelectedIndex).sukunimi = textBox2.Text;
                    liiga.PalautaPelaaja(listBox1.SelectedIndex).siirtohinta = Convert.ToInt32(textBox3.Text);
                    liiga.PalautaPelaaja(listBox1.SelectedIndex).seura = comboBox1.SelectedItem.ToString();
                    InitializeUI();
                    InitializeEdit();
                }
            }
            catch (Exception ex) { label5.Content = ex.Message; }
        }

        private void button3_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                liiga.Save();
            }
            catch (Exception ex) { label5.Content = ex.Message; }
        }

    
    }
}
